Construir un sistema operativo completo compilando su código fuente no es algo para los pusilánimes;una distribución moderna de Linux o BSD contiene miles de paquetes con millones de líneas de código, todos los cuales deben procesarse en el orden correcto y el resultado debe almacenarse en el lugar adecuado.Para todos, excepto para los devotos más incondicionales de Gentoo, es mucho más fácil obtener binarios precompilados, pero obviamente alguien debe haber ejecutado todo el proceso de compilación en algún momento.Lo que es cierto para los sistemas operativos modernos también es válido para software antiguo como MS-DOS.Cuando Microsoft lanzó el código fuente para varias versiones de DOS hace un par de años, muchas personas estudiaron detenidamente el código para buscar comentarios extraños y características no documentadas, pero pocos intentaron compilar el paquete completo.Pero [Michal Necasek] en el Museo OS/2 no rehuyó ese desafío y documentó el proceso completamente complicado de compilar DOS 2.11 desde la fuente.El primer problema fue averiguar qué versión estaba disponible: aunque el Computer History Museum etiquetó el paquete simplemente como "MS-DOS 2.0", en realidad contenía una combinación de binarios OEM de la versión 2.0, código fuente de la versión 2.11 y algunos otros. cosas que quedaron del proceso de desarrollo.Los binarios OEM son en su mayoría ejecutables terminados, pero también contienen código fuente básico para algunos componentes del sistema, lo que permite a los fabricantes de computadoras adaptar esos componentes a su plataforma de hardware específica.La compilación del código fuente tampoco fue trivial.[Michal] estaba decidido a utilizar herramientas de período correcto y examinó el comportamiento de una docena de versiones de MASM, el ensamblador que probablemente Microsoft utilizó a principios de la década de 1980.Al final resultó que, la versión 1.25 de 1983 produjo un código que coincidía más con el código objeto que se encuentra en los binarios existentes, e incluso entonces algunas partes del código fuente requirieron ligeras modificaciones para compilarse correctamente.La entrada de blog de [Michal] también entra en detalles extensos sobre las sutiles diferencias entre el DOS estilo Microsoft y el estilo IBM, que van más allá de los nombres de los archivos del sistema (MSDOS.SYS frente a IBMDOS.COM).El resultado final de este ejercicio es un paquete fuente de DOS 2.11 modificado que en realidad se compila en un conjunto funcional de archivos binarios, a diferencia del original.Y aunque esto no genera ningún código nuevo, dado que los binarios de DOS 2.11 han estado disponibles desde hace mucho tiempo, proporciona una mirada fascinante a las prácticas de desarrollo de software en una época en la que incluso los componentes básicos de la plataforma de PC no estaban completamente estandarizados.Y no olvide que incluso hoy en día a algunas personas les gusta desarrollar nuevo software DOS.¿Soy yo o otros con mucha memoria piensan que las ideas para MS-DOS se tomaron del RT-11 de DEC?Sí, y Windows NT huele mucho a VMS cuando quitas las cubiertas.Microsoft siempre ha sufrido de falta de innovación, copiaron sin descanso de Digital y robaron a muchos de sus mejores ingenieros porque Gates y Allen no tenían talento para el diseño de sistemas.Busque el nombre "David Cutler". Uno de los ingenieros que trabajó en VMS y TR-11 mientras estaba en DEC, luego se mudó a Microsoft para liderar el trabajo en Windows NT y XP.Es seguro que no será el único de esos días con dedos en gran parte de la computación temprana, solo el único nombre que recuerdo.Sin embargo, ciertamente no sorprende el por qué de todos los puntos en común.(Como nota al margen, acabo de enterarme de que el Sr. Cutler todavía trabaja en MS, está en el equipo de Xbox y también tuvo un papel muy importante en su sistema operativo)Cutler nunca trabajó en RT-11 (o TR-11, que no existe).Su trabajo PDP11 en DEC fue en RSX.Sí, el TR fue un error tipográfico de RT.y podría haber jurado que lo hizo, pero no recuerdo por qué pensé eso.Wikipedia dice que tienes razón, así que estoy corregido.Cutler también diseñó VAXELN, el sistema operativo VAX en tiempo real, principalmente para los modelos rtVAX.Cuanto más lees sobre el trabajo de Cutler, más te das cuenta de que es un tipo brillante.Mantuve correspondencia con Dave Cutler durante mi tiempo en Microsoft (2008-2010).Fue el diseñador original de VMS y Windows NT.En caso de que se esté preguntando qué significa NT, yo me pregunté lo mismo, y alguien me dijo que las iniciales "WNT" en realidad se derivaron al agregar una letra a cada letra en VMS.No sé si eso es cierto, pero es una historia genial.¡Este es un gran tema!Soy uno de los que pasó muchos meses haciendo ingeniería inversa de las llamadas indocumentadas de DOS.De todos modos, debido a este hilo busqué un poco en Google y se me ocurrió un artículo bastante interesante.El autor, Mark Russinovich, también es un gran técnico de bajo nivel como MS-https://www.itprotoday.com/compute-engines/windows-nt-and-vms-rest-storyLas ideas para DOS se tomaron de CP/M... las ideas para las cuales se tomaron de RT-11.Casi.Gary Kildall, el creador de CP/M, tenía experiencia con un PDP-10.Y así fue influenciado por TOPS-10, que se derivó de un sistema operativo anterior.RT-11 fue un sistema operativo posterior de DEC y usó convenciones de TOPS-10.En cierto sentido, tanto RT-11 como CP/M eran similares, pero solo en un sentido superficial.Nombres similares para utilidades similares, como el bote de basura llamado *PIP.Sin mencionar los nombres de extensión de archivo de 3 caracteres y el conjunto de caracteres limitado.Dado que el PDP-10 era una máquina de 18 bits, podía empaquetar 3 caracteres de 6 bits en una palabra de 18 bits.RT-11 continuó con esa convención porque usa la codificación RAD-50 para empaquetar 3 caracteres en una palabra de 16 bits.Sin embargo, el interior era muy diferente.RT-11 era/es un sistema de tiempo real y CP/M no lo es.TOPS-10 era un sistema mainframe y tenía características muy diferentes.*PIP era un basurero porque tenía muchas funciones.PIP significa Programa de Intercambio de Periféricos y se encargó de cosas como listados de directorios, enumerar el contenido de un archivo de texto y muchas otras cosas.Esas funciones estaban controladas por un gran conjunto de interruptores.Una cosa buena que hizo PC/MS-DOS fue hacer esos programas separados con nombres separados.Es gracioso lo que más de una década de la Ley de Moore significó para la memoria disponible.Perdón por mi ASD pateando.No olvide OS/8 que fue el DOS para el PDP-8 que formó la base para todos estos, también hubo un DOS-11 que fue la base para RT-11 y otros sistemas operativos DEC y fue parte del DEC conjunto de programas de prueba para el PDP-11.Arrancaría DOS-11 para que el ensamblador construya UNIX temprano o copie su nuevo sistema operativo adecuado de la cinta al disco si no tiene nada más que hacer todavía.Recordado'?Es un editor de texto que tiene tan poca memoria que necesita pedirle manualmente al editor que busque un bloque de líneas, las modifique y luego escriba ese bloque de líneas.Luego haces lo mismo con el siguiente bloque de líneas.Estaba tan feliz cuando finalmente conseguí wordstar.Excelente editor de programas también (bueno, en mi opinión).Todavía tengo el disco y la contraseña de CPM 2.2 Sysgen dando vueltas en algún lugar del mundo.Formato original IBM 8″ creo.Bueno, ed más tarde consiguió una interfaz gráfica de usuario.se llama vi¿Estás pensando en Edwin?PIP provino principalmente de RSX-11, creo que Cutler también había estado involucrado y que también diseñó VAXELN, el sistema operativo en tiempo real (RT-11, reemplazo de VAX) principalmente para los modelos rtVAXNo, fue ex quien obtuvo una interfaz de usuario (por Bill Joy) y se convirtió en vi.ed se quedó en el camino cuando llegó ex.Excepto, sed (modo de transmisión ed) permaneció/sigue siendo útil.El PDP-10 era en realidad una máquina de 36 bits, con dos "medias palabras" de 18 bits por cada palabra de 36 bits.Tengo la edad suficiente para haber programado un PDP-10 y, según recuerdo, tenía un conjunto de instrucciones simétricas muy bueno.Cada una de las dos medias palabras de 18 bits podía abordar todas las 256 000 palabras de memoria que podía contener la máquina, por lo que era adecuada para la programación LISP, que utiliza muchos punteros.Algunos de mis recuerdos del uso de Intel antiguo, pero principalmente herramientas de software de Microsoft en la era de MS-DOS y Windows de 16 bits, anteriores a 880386 y posteriores, fueron todos los problemas relacionados con la administración de memoria.Algunas compilaciones necesitan mucha memoria inferior, ya que solo se ejecutarían en el espacio de direcciones inferior de 1 MB.Los TSR tuvieron que ser eliminados.Necesitaba la tarjeta de video "correcta" y, a veces, la placa base para funcionar.MS C V6 deshabilitaría "silenciosamente" algunas optimizaciones si no hubiera suficiente memoria.Y sigue, y sigue, y…Turbo Pascal era el entorno de desarrollo elegido en ese entonces, incluso Microsoft lo usaba porque su compilador C era terrible.Estoy bastante seguro de que MS nunca lanzó nada de Turbo Pascal.Microsoft lanzó su primer compilador Pascal en 1980, mientras que Turbo Pascal salió en 1983. El lenguaje Pascal de Nick Wirth no permitía las referencias directas porque estaba diseñado para ser un compilador de un solo paso.Usó procedimientos anidados como P/LM (¡para los cuales tengo casi 0 experiencia!).Es asombroso cuánto tiempo les tomó a los fabricantes darse cuenta de que lo que hace que algo sea popular es el bajo precio con una funcionalidad decente.El "primer" compilador de MS C fue una versión con licencia de Lattice C (creo que todavía tengo algunos disquetes antiguos de 5″).Más tarde, MS pudo hacer su propia versión después de contratar mucho talento para hacerlo.Mi primer MS C (¿versión?) en 1985 costó algo así como $ 395 cuando eso era un montón de dinero (COLA de 3.1, por lo tanto, alrededor de $ 1200 ahora).“Es sorprendente cuánto tiempo les tomó a los fabricantes darse cuenta de que lo que hace que algo sea popular es el bajo precio con una funcionalidad decente”.Creo que Ford aprendió esa lección con el Modelo T. B^)“Es sorprendente cuánto tiempo les tomó a los fabricantes darse cuenta de que lo que hace que algo sea popular es el bajo precio con una funcionalidad decente”.¿Eh?Eso suena como si la gente realmente estuviera pagando por su software.Tenía la impresión de que las cosas populares como el último DOS, Norton Commander, XTree Gold, WordStar, MS Word, 1-2-3, dBase y Turbo Pascal generalmente se "tomaban prestadas" en los años 80... :)Bueno, esos eran los días.Recuerdo, cuando me enojé con MSDOS 3.2, luego seguí adelante, obtuve un libro viejo de una tienda de segunda mano que detallaba el microprocesador 8086 y también tenía una lista de BIOS e interrupciones.Era como un tesoro para mí.Usé TCC de Turbo C y escribí la directiva de ensamblador de mezcla de programas, deseché las bibliotecas C, escribí mis propias bibliotecas y usé interrupciones de BIOS, escribí un pequeño sistema operativo para administrar la memoria, operaciones de disco, crear mi propio diseño FAT, arrojé una palabra procesador, un editor de gráficos y un intérprete de LOGO, todo escrito en C y ensamblador.Todo compilado, vinculado y convertido a formato bin (cualquiera recuerde exe2bin), llegó a 8k.Lo quemé en EPROM y lo puse en la caja madre y tenía una máquina en funcionamiento en la que jugué.Una de mis mejores creaciones hasta la fecha, ya que aprendí mucho al hacerlo.Después de eso, no volví a escribir en C, ya que solía parecer aburrido.Y C ++ es para personas perezosas, en mi percepción y estoy 100% equivocado ya que hay algunos programadores geniales que codifican en OOP, aunque durante mucho tiempo mi respuesta solía ser OOPS.:DEsos eran días hermosos en los que solíamos juzgar el calibre de un programador en qué tan bueno era el programa funcionalmente y qué menos memoria solía usar.30 años después, ¡ESTOY DECEPCIONADO!En mi opinión, la industria de TI ha retrocedido un millón de pasos.Hoy mi computadora portátil tiene 32 GB de RAM, mientras que mi PC – XT en la que solía programar tenía 128 MB de disco duro y 1 MB de RAM y solía pensar que era rico.Los programas que veo hoy, diablos en aquellos días, habría echado el programa y el programador por motivos de programación ineficiente y desperdicio de recursos.Echo de menos aquellos días en que el rendimiento (en general) era el único criterio.Se llamaba Quick Pascal, y sí, había incluso uno profesional.Incluso es compatible con OS/2.Microsoft nació como una empresa de idiomas, aunque ese compilador de C fue algo que compraron.Tengo un paquete de “OS2 para Windows 3.1”.(Sin abrir) Nunca llegué a probarlo..Peor de lo que te imaginas.Antes de que Microsoft ingresara a los sistemas operativos, eran proveedores de compiladores e intérpretes.En algún lugar tengo una copia de bascom (compilador básico) y fortran77 para CP/M¡Guau!Sigo pensando que Turbo Pascal 5.5 fue la mejor herramienta de desarrollo que he usado.Para su época, nada de lo que MS podía ofrecer se le acercaba.En cuanto a la discusión sobre CP/M, Epson presentó una versión sobresaliente llamada TP/M para su serie de computadoras QX.Eso agregó memoria paginada para permitir que los programas utilicen 4 bloques de 64k RAM.¡Fue un placer jugar con eso en ese entonces!Dios, me encantaba ese entorno, automatizaba casi todo en mi trabajo usando DOS y TP.Todo tan nuevo y divertido, la programación se siente como un trabajo pesado en estos días.Probablemente un error tipográfico, un 8 de más.Luego están los chips periféricos y otros bichos raros como el 80385.Un pensamiento hacia BSD /”miles de paquetes”/ para FreeBSD:Cuando lo instala, se le pregunta si desea instalar las "fuentes", lo que hace que las fuentes se extraigan de un archivo (src.txz) en la carpeta /usr/src.Esas son las fuentes para todo su sistema base, incluidos ls, cp, etc. y para cada comando hay subcarpetas llamadas "/usr/src/bin/ls" o "/usr/src/usr.bin/awk" ( sí, la subcarpeta se llama usr-dot-bin en lugar de agregar otra subcarpeta)En su mayoría, encontrará un archivo MAKE llamado "Makefile", un archivo Troff/página de manual ".1" y los archivos c-sources/header para el programa en cuestión, y las carpetas principales también tienen un archivo MAKE para hacer todo en el directorio actual.Las fuentes también se dividen en diferentes directorios según sus licencias, ya que el sistema base de FreeBSD se esfuerza por tener licencia BSD, pero de hecho toma prestado, por ejemplo, dtrace que está bajo CDDL y hasta hace algún tiempo gnu-tar.Cuando haya encontrado "/usr/src/sys", esa es la fuente del kernel y las herramientas de lanzamiento se encuentran en "/usr/src/release"Este es el sistema base y los otros programas que instala son manejados por la herramienta "pkg" / ports-install/registrationY si te preguntas por qué prefiero FreeBSD a Linux... es por ese enfoque estructural, que realmente me gusta después de haberme metido en LFS.ha habido tantos cambios en los últimos 40 años.Recuerdo lo eufórico que estaba cuando simplemente podía llamar a malloc(x) con x > 65536, y no tener que preocuparme por los punteros lejanos o la paginación EMS o lo que no.Podría seguir.tantas pequeñas revoluciones.pero cuando leí este artículo, di todo eso por sentado y solo me llamó la atención un paso: ¡administración de fuentes!Lo recuerdo bien... solía hacer mis cambios en la única copia del código fuente que tenía.Una vez que hice un cambio, no solo creé algo nuevo, ¡sino que destruí lo que era viejo!si actualicé algo sobre mi entorno de compilación que requería cambios en mi código fuente, la versión que se creó en el entorno anterior desaparecerá para siempre.y ese entorno de construcción, ¡podría tener trucos únicos que nunca se pueden replicar nuevamente!todo el desarrollo se llevó a cabo solo en la cabeza, no hubo propagación de una solución como una actualización a una versión anterior.incluso en productos de gran presupuesto, la ocasión del lanzamiento de la versión 2.0 a menudo significaba la pérdida total de la versión 1.0 para siempre.¡Dios no lo quiera, tiene dos desarrolladores trabajando en el mismo módulo y tienen que hacer una fusión!Recuerdo cuando estuve expuesto a rcs, pensé "esto es bastante bueno".¡y git es tan moderno!pero imaginar la vida antes de esta herramienta es todo un viaje mentalEso me hace retroceder un poco.No recuerdo RCS, pero hago VCS y ClearCase y Microsoft Visual Source Safe, que fue horrible en comparación con VCS (¿alguien tiene bloqueo exclusivo en los archivos extraídos?).Recuerdo cuando Subversion se autohospedó y rompió su repositorio.Sigo prefiriendo Subversion a Mercurial o Git porque admite directorios como elementos de revisión de primera clase.Hace algunas décadas construir un Linux minimalista era tan fácil como hacer un disquete de DOS.Aparte del núcleo (en extremo en un disco propio, que pediría el 2º) sólo se necesitaban unas entradas '/dev' y un shell estático renombrado como 'init'.XIAFS podía reservar el espacio para el kernel al formatear un medio y con otros FS solo era un poco más de malabarismo para obtener todo eso en 1 disquete.No es sorprendente que un sitio web que obviamente no está en este país sirva software abandonado.Entre su colección se encuentra lo que llama el kit OEM para DOS3.3.Y Lee, obtuvieron ideas de Digital Research que creó CP/M-86.Como alguien más dijo una vez, "es complicado"."Obviamente", teclado tonto, todavía no le gusta que los gatos lo pisoteen.¿Qué es el kit OEM para DOS3.3?Al igual que hoy, los "kits" OEM son lo que los vendedores de computadoras (por ejemplo, Dell, HP) usan para personalizar su hardware (ya veces, software adicional).Sí, todo es cierto. MS actúa como una empresa de franquicias, vendiendo acceso al núcleo y permitiendo la impresión personalizada.MS tuvo un pedo cerebral cuando se lanzó Win95 Beta para los primeros usuarios.El disquete de arranque no tenía un "Comando de ruta" que apuntara al CD.Después de instalar 95 desde los disquetes, descubrí por qué el CD fallaba la instalación.Momentos divertidos... No muy lejos de los requisitos de Win11, me vi obligado a comprar un nuevo sistema para soportar el software win 95.Software antiguo????Vamos, yo estaba en mi primer año de universidad en el '83 y no creo que sea un anciano :)….No todavía, de todos modos….Turbo Pascal mencionado anteriormente.Eso fue una bendición para mí en la universidad.Podría escribir proyectos escolares con él en casa en mi DEC Rainbow con CPM/86 y luego 'cargarlo' al VAX cuando termine (a 300, luego a 1200 baudios).Nada de pelear por 'terminales' en la universidad.Además, podría, por supuesto, crear mis propios proyectos por diversión.Artículo interesante.Me trae muchos buenos recuerdos.Somos antiguos quizás, cuando se trata de los campos de la informática, no estoy seguro.🤷♂️ 1983 fue años antes de mi tiempo.Tenía mi antigua pero querida PC 286 con MS-DOS 6.2 y Win 3.x cuando era pequeña.Y una PC de la serie Sharp MZ con un conjunto de datos un poco antes.De todos modos, me gustaría pensar que 10 años en computación equivalen a 100 años en la sociedad humana.Porque eso explicaría mucho por qué las viejas convenciones informáticas comienzan a desmoronarse de vez en cuando.De todos modos, es probable que no seas viejo como persona si tu mente todavía está fresca y abierta.🙂Hace tiempo que olvidé el nombre de las variables, pero enterrado en DOS 2 COMMAND.COM había tanto un gancho para leer disquetes de 8″ en formato C/PM como también esa variable de contador de instancias multiusuario de UNIX que se usaba para rastrear cuántos usuarios estaban usando un programa en este momento.No sé los detalles, pero ninguno de los demás de command.com era capaz de multiusuario o multitarea.Podría reemplazar command.com con su propio programa de shell con bastante facilidad, en realidad no era necesario a menos que quisiera un indicador de DOSSolía usar 4DOS como reemplazo de shell.¿Cuánto de Quick and Dirty DOS hay en esa versión del código fuente?¿Alguien recuerda BOOT.SYS?Solía mostrar un menú fuera del archivo CONFIG.SYS para permitirle iniciar diferentes configuraciones (por ejemplo, administradores de memoria como QEMM o 386MAX) sin tener que editar/cambiar el archivo CONFIG.SYS y reiniciar.Realicé ingeniería inversa del código de arranque de DOS usando un depurador de hardware y creé BOOT.SYS, porque estábamos cansados de mantener una cantidad de disquetes de arranque en un laboratorio de computación en una institución educativa.Esto resultó tan útil que comencé a distribuirlo como shareware y me gané la vida decentemente con él durante cinco años, hasta que MS introdujo su propio sistema de menú básico.Finalmente, el mundo cambió a Windoze y desapareció la necesidad de tener múltiples variaciones de CONFIG.SYS.También pirateé Turbo Pascal para que imprimiera el código fuente y el resultado de la ejecución en una sola hoja de papel, para documentar las tareas de los estudiantes.Esto hizo mucho más difícil hacer trampa... :-)En mi escuela, arreglé cada computadora con una caja de disco duro extraíble y cada estudiante tenía su propio disco duro.Solucionado muchos errores..Sin Internet, tenía que confiar en los artículos de las revistas. También tenía el Databook 8086 de Intel, que era increíble y más tarde en la vida de la PC, apareció un libro llamado PC Intern, que fue la guinda del pastel para los piratas informáticos y le mostró cómo llamar. sobre todo en el BIOS usando C, Pascal y BasicTodavía tengo algunos de mis antiguos manuales de procesadores, incluido el Databook de la serie 32000 de 1984 de National Semiconductor, que usé al escribir mi propio ensamblador para el coprocesador matemático 32081.Necesitaba eso para escribir una biblioteca matemática APL para el 68000 para un cliente que vendía 68000 placas complementarias para PC.¿Por qué no usar el coprocesador matemático 68881 en su lugar?Porque eso costaba $500 o más, mientras que el 32081 costaba algo así como $25.Sea amable y respetuoso para ayudar a que la sección de comentarios sea excelente.(Política de comentarios)Este sitio utiliza Akismet para reducir el spam.Aprende cómo se procesan los datos de tus comentarios.Al utilizar nuestro sitio web y nuestros servicios, usted acepta expresamente la colocación de nuestras cookies de rendimiento, funcionalidad y publicidad.Aprende más